\documentclass[a4paper,10pt]{report}\input{../0.Préambule/Préambule_cours_prof}\input{0_Préambule_Repré2}\begin{document}

\newpage
\setcounter{chapter}{4}
\chapter{Les p-uplets}

En programmation, un objet peut être simple  un nombre, une chaîne de caractère, un booléen) ou construit (composé de plusieurs « objets »).

\begin{ex}
Un objet \og train \fg{} peut être composé de deux objets \og trains \fg{} (accrochés entre eux) et chacun d'entre eux est composé d'une locomotive, de wagons,etc.
\end{ex}

\noindent Nous allons étudier cette année plusieurs structures de types construits : les p-uplets, les listes et les tableaux.

\section{Les p-uplets (ou tuples)}

Activité d'introduction : \href{https://pixees.fr/informatiquelycee/n_site/nsi_prem_pythonSequence.html}{Les tuples en Python}

\begin{dft}
Un p-uplet (tuple en anglais)  est une suite ordonnée d'éléments \textbf{non modifiables}. Pour créer un tuple on utilise des parenthèses.

\noindent L'accès aux éléments se fait avec leurs indices. (premier indice : 0 )
\end{dft}

\begin{ex}
\renewcommand{\arraystretch}{2}
\begin{tabular}{lp{13cm}}
\edupythoninline{t=()} & tuple vide\\
\edupythoninline{t=(4,)} & initier un tuple avec une seul valeur\\
\edupythoninline{t=t+(2,5,7,8)} & concaténation : \edupythoninline{t} vaut \dotfill\\
\edupythoninline{t[2]} & affiche \dotfill\\
\edupythoninline{t[2]=3} & Va provoquer une erreur car \dotfill\\
\end{tabular}

\color{red}\vspace{-0.3cm}\hspace{2cm}\begin{verbatim}
	TypeError
	Traceback (most recent call last)
	<ipython-input-19-8ae953d958b6> in <module>()
	----> 1 t[2]=3
	TypeError: 'tuple' object does not support item assignment
\end{verbatim}
\color{black}
\end{ex}

\begin{ex}
\noindent \renewcommand{\arraystretch}{2}
\begin{tabular}{lp{13cm}}
\multicolumn{2}{l}{\edupythoninline{t=(4,'a',5,'yo',3,True,7,2,8)}}\\
\edupythoninline{t[2:5]} & résultat retourné : \dotfill\\
\edupythoninline{t[:5]} & résultat retourné : \dotfill\\
\edupythoninline{t[3:]} & résultat retourné : \dotfill\\
\edupythoninline{t[:3]+(10,)+t[4:] } & résultat retourné : \dotfill\\
\edupythoninline{3 in t} & résultat retourné : \dotfill\\
\edupythoninline{len(t)} & résultat retourné : \dotfill\\
\end{tabular}
\end{ex}

\section{Utilisation des p-uplets}

\begin{exer2}

\vspace{3mm}
Un triplet Pythagoricien est un triple d'entier $(a,b,c)$ tel que $c^2=a^2+b^2$

\noindent Chaque triplet peut être considéré comme un tuple.

\noindent Écrire une fonction \edupythoninline{TripletPythagoricien} qui prend en paramètre un nombre entier $n$, qui renvoie tous les triplets Pythagoriciens d'entiers dont les valeurs $a$, $b$ et $c$ sont inférieurs à $n$.

\medskip
Exemple de rendu :

\begin{minipage}{16.5cm}
\begin{edupython}
>>> TripletPythagoricien(100)
((3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (9, 40, 41), 
(10, 24, 26), (11, 60, 61), (12, 16, 20), (12, 35, 37), (13, 84, 85), (14, 48, 50), (15, 20, 25),
(15, 36, 39), (16, 30, 34), (16, 63, 65), (18, 24, 30), (18, 80, 82), (20, 21, 29), (20, 48, 52),
(21, 28, 35), (21, 72, 75), (24, 32, 40), (24, 45, 51), (24, 70, 74), (25, 60, 65), (27, 36, 45),
(28, 45, 53), (30, 40, 50), (30, 72, 78), (32, 60, 68), (33, 44, 55), (33, 56, 65), (35, 84, 91), 
(36, 48, 60), (36, 77, 85), (39, 52, 65), (39, 80, 89), (40, 42, 58), (40, 75, 85), (42, 56, 70), 
(45, 60, 75), (48, 55, 73), (48, 64, 80), (51, 68, 85), (54, 72, 90), (57, 76, 95), (60, 63, 87), 
(65, 72, 97))
\end{edupython}
\end{minipage}
\end{exer2}

\begin{exer3}
Ouvrir le fichier \href{https://www.axelnax.fr/index.php?p=c&1=2&2=4&3=2}{Les uplets}
\end{exer3}

\end{document}